package com.explam.springboot.controller;

import cn.hutool.core.io.FileUtil;
import com.explam.springboot.entity.Files;
import com.explam.springboot.mapper.FileMapper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;
import java.util.UUID;

/**
 * 文件上传接口
 * @return
 * @throws IOException
 */
@RestController
@RequestMapping("/file")
public class FileController {

    @Resource
    private FileMapper fileMapper;

    //    设置存放路径
    @Value("${pictureFile.path}")
    private String picturePath;

    @Value("${pictureFile.path-mapping}")
    private String picturePath_mapping;


    @PostMapping("/upload/img")
    public String Upload(@RequestParam MultipartFile file) throws IOException {
        String fileName  = file.getOriginalFilename();// 获取文件名称 1.jpeg
        String type =FileUtil.extName(fileName);     // 获取文件类型 jpeg
        long size = file.getSize();            // 获取文件大小 72895
        String suffixName = fileName.substring(fileName.lastIndexOf("."));  // 后缀名 .jpeg

//        创建新的文件
        File saveFile  = new File(picturePath);
        // picturePath: D:/自学java/task/file/
        // saveFile: D:\自学java\task\file\

//        检查路径名称是否存在，如果不存在，则重新创建
        if(!saveFile .exists()){
            saveFile .mkdir();
        }
        //拼接url，采用随机数，保证每个图片的url不同
        UUID uuid = UUID.randomUUID();
        System.out.println("uuid========"+uuid); //6c736aa5-efc1-4691-9d52-1a544db1b4f9

        fileName = uuid + suffixName; // 新文件名 6c736aa5-efc1-4691-9d52-1a544db1b4f9.jpeg

        File dest = new File(picturePath + fileName);
        // dest: D:\自学java\task\file\6c736aa5-efc1-4691-9d52-1a544db1b4f9.jpeg

        if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdirs();
        }
        try {
//            存储到磁盘路径
            file.transferTo(dest);
        } catch (IOException e) {
            e.printStackTrace();
        }
        String url = "http://localhost:8888" + picturePath_mapping + fileName;

        //        创建对象 把图片信息存储到数据库中
        Files files = new Files();
        files.setName(fileName);
        files.setType(type);
        files.setSize(size/1024);
        files.setUrl(url);
        fileMapper.insert(files);
        return url;
    }

}

